<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Login extends Frontend_Controller {

    function __construct() {
        parent::__construct();
        $this->load->model('login_model');
    }

    public function index() {
        $data = array(
            'global_data' => $this->global_data
        );
        $data ['list_city'] = $this->geo_model->get_by_parent_id();

        if (isset($_POST['email']) && !check_login()) {
            $email = trim($this->input->post('email'));
            $password = trim($this->input->post('password'));
            $remember = intval($this->input->post('remember'));
            $rs_login = $this->do_login($email, $password, $remember);
            if($rs_login){
                redirect('hometown');die;
            }
        }

        $this->load->view('layout/header-login', $data);
        $this->load->view('vlogin', $data);
        $this->load->view('layout/footer', $data);
        
    }

    function do_login($email, $password, $remember = 0) {
        $password_md5 = md5($password);
        $remember_expire = 60 * 60 * 24 * 7; //7 ngay
        $arr_profile = $this->login_model->get_by_email_password($email, $password_md5);
        if ($arr_profile) {
            
            $_SESSION['member'] = $arr_profile;
            if ($remember) {
                $cookies_mail = encrypt($email);
                $cookies_pass = encrypt($password_md5);
                $str_cookies = json_encode(array('email' => $cookies_mail, 'password' => $cookies_pass, 'expire' => encrypt('#####' . (time() + $remember_expire) . '#####')));
                setcookie('remember_login', $str_cookies, time() + $remember_expire, '/');
            }
            return TRUE;
            

//            if ($arr_profile['status'] == 'no') {
//                return 'not_active';
//            } elseif ($arr_profile['verified'] == 'no') {
//                return 'not_verify';
//            } else {
//                $_SESSION['member'] = $arr_profile;
//                if ($remember) {
//                    $cookies_mail = encrypt($email);
//                    $cookies_pass = encrypt($password_md5);
//                    $str_cookies = json_encode(array('email' => $cookies_mail, 'password' => $cookies_pass, 'expire' => encrypt('#####' . (time() + $remember_expire) . '#####')));
//                    setcookie('remember_login', $str_cookies, time() + $remember_expire, '/');
//                    return TRUE;
//                }
//            }
        }
        return FALSE;
    }

    function logout() {
        if (check_login()) {
            $remember_expire = 60 * 60 * 24 * 7; //7 ngay
            unset($_SESSION['member']);
            setcookie('remember_login', '', time() - $remember_expire, '/');
        }
        redirect('login');
    }

    public function register() {

        $data = array(
            'global_data' => $this->global_data
        );

        if (isset($_POST['email'])) {

            $rs_register = $this->do_register();
            
            if ($rs_register['status']) {
                $email = trim($this->input->post('email'));
                $password = trim($this->input->post('password'));
                $this->do_login($email, $password);
            } else {
                $data ['error_message'] = $rs_register['error_message'];
                $city = intval($this->input->post('city'));
                $district = intval($this->input->post('district'));

                if ($district) {
                    $data ['list_ward'] = $this->geo_model->get_by_parent_id($district);
                }
                if ($city) {
                    $data ['list_district'] = $this->geo_model->get_by_parent_id($city);
                }
            }
        }

        

        $data ['list_city'] = $this->geo_model->get_by_parent_id();


        $this->load->view('layout/header-login', $data);
        $this->load->view('vregister', $data);
        $this->load->view('layout/footer', $data);
    }

    function do_register() {

        $is_error = FALSE;
        $error_message = array();
        $fullname = trim($this->input->post('fullname'));
        $email = trim($this->input->post('email'));
        $password = trim($this->input->post('password'));
        $repassword = trim($this->input->post('repassword'));
        $gender = intval($this->input->post('gender'));
        $d_dob = intval($this->input->post('d_dob'));
        $m_dob = intval($this->input->post('m_dob'));
        $y_dob = trim($this->input->post('y_dob'));
        $city = intval($this->input->post('city'));
        $district = intval($this->input->post('district'));
        $ward = intval($this->input->post('ward'));
        $password_md5 = md5($password);

        $check_email_exist = $this->login_model->get_by_email($email);
        if (isset($check_email_exist['id'])) {
            $is_error = TRUE;
            $error_message[] = "Email bạn nhập đã được đăng ký";
        }

        if ($fullname == '') {
            $is_error = TRUE;
            $error_message[] = "Bạn chưa nhập họ tên";
        }
        if (!@eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
            $is_error = TRUE;
            $error_message[] = "Bạn nhập email không đúng";
        }
        if (strlen($password) < 6) {
            $is_error = TRUE;
            $error_message[] = "Mật khẩu phải có ít nhất 6 ký tự";
        }
        if ($password != $repassword) {
            $is_error = TRUE;
            $error_message[] = "Bạn nhập mật khẩu không trùng khớp";
        }
        if (!$gender) {
            $is_error = TRUE;
            $error_message[] = "Bạn chưa chọn giới tính";
        }
        if (!$d_dob) {
            $is_error = TRUE;
            $error_message[] = "Bạn chưa chọn ngày sinh";
        }
        if (!$m_dob) {
            $is_error = TRUE;
            $error_message[] = "Bạn chưa chọn tháng sinh";
        }
        if (!$y_dob) {
            $is_error = TRUE;
            $error_message[] = "Bạn chưa chọn năm sinh";
        }
        if (!$city) {
            $is_error = TRUE;
            $error_message[] = "Bạn chưa chọn tỉnh/thành phố";
        }
        if (!$district) {
            $is_error = TRUE;
            $error_message[] = "Bạn chưa chọn quận/huyện";
        }
        if (!$ward) {
            $is_error = TRUE;
            $error_message[] = "Bạn chưa chọn phường/xã";
        }



        if ($is_error === FALSE) {
            $create_date = date('Y-m-d H:i:s');
            $arr_insert = array(
                'fullname' => $fullname,
                'email' => $email,
                'password' => $password_md5,
                'gender' => $gender,
                'dob' => "$y_dob-$m_dob-$d_dob 00:00:00",
                'city' => $city,
                'district' => $district,
                'ward' => $ward,
                'create_date' => $create_date,
                'last_update' => $create_date,
            );
            $this->db->insert('member', $arr_insert);
            $mid = $this->db->insert_id();
            if ($mid) {
                return array('status' => TRUE, 'member_id' => $mid);
            }
        }
        return array('status' => FALSE, 'error_message' => $error_message);
    }

}
